package com.shhm.admin.controller;

import com.shhm.admin.service.StudentService;
import com.shhm.common.annotations.OperateLog;
import com.shhm.common.dto.request.RequestList;
import com.shhm.common.dto.request.admin.StudentReq;
import com.shhm.common.dto.response.AjaxResultPlus;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.*;

/**
 * @author JackZ
 * @version 1.0
 * @description: 学生信息管理控制器
 * @date 2025/9/20
 */
@RestController
@RequestMapping("/admin")
public class StudentController {
    @Resource
    private StudentService studentService;

    /**
     * 分页查询待审核的学生信息
     * @param pageNum 页码
     * @param pageSize 每页条数
     * @param entity 查询条件
     * @return 分页结果
     */
    @PostMapping("/audit/student/search")
    @OperateLog(module="学生信息审核", type="POST", desc="分页查询待审核的学生信息")
    public AjaxResultPlus auditPageSearchList(
            @RequestParam(defaultValue = "1") Integer pageNum,
            @RequestParam(defaultValue = "10") Integer pageSize,
            @RequestBody StudentReq entity
    ) {
        return studentService.auditPageList(pageNum, pageSize, entity);
    }

    /**
     * 审核学生信息
     * @param entity 审核信息
     * @param request 请求对象
     * @return 操作结果
     */
    @PutMapping("/audit/student")
    @OperateLog(module="学生信息审核", type="PUT", desc="审核学生信息")
    public AjaxResultPlus auditStudent(
            @RequestBody StudentReq entity,
            HttpServletRequest request
    ) {
        return studentService.auditStudent(entity, request);
    }

    /**
     * 分页查询所有审核完毕的学生信息
     * @param pageNum 页码
     * @param pageSize 每页条数
     * @param entity 查询条件
     * @return 分页结果
     */
    @PostMapping("/student/search")
    @OperateLog(module="学生信息管理", type="POST", desc="分页查询学生信息")
    public AjaxResultPlus pageSearchList(
            @RequestParam(defaultValue = "1") Integer pageNum,
            @RequestParam(defaultValue = "10") Integer pageSize,
            @RequestBody StudentReq entity
    ) {
        return studentService.pageList(pageNum, pageSize, entity);
    }

    /**
     * 添加学生信息（默认data_status=3）
     * @param entity 学生信息
     * @param request 请求对象
     * @return 操作结果
     */
    @PostMapping("/student")
    @OperateLog(module="学生信息管理", type="POST", desc="添加学生信息")
    public AjaxResultPlus add(
            @RequestBody StudentReq entity,
            HttpServletRequest request
    ) {
        return studentService.add(entity, request);
    }

    /**
     * 更新学生信息（更新时data_version自动加1）
     * @param entity 学生信息
     * @param request 请求对象
     * @return 操作结果
     */
    @PutMapping("/student")
    @OperateLog(module="学生信息管理", type="PUT", desc="更新学生信息")
    public AjaxResultPlus update(
            @RequestBody StudentReq entity,
            HttpServletRequest request
    ) {
        return studentService.update(entity, request);
    }

    /**
     * 删除学生信息
     * @param ids 学生信息ID列表
     * @return 操作结果
     */
    @DeleteMapping("/student")
    @OperateLog(module="学生信息管理", type="DELETE", desc="删除学生信息")
    public AjaxResultPlus delete(@RequestBody RequestList ids) {
        return studentService.delete(ids);
    }
}